/**
 * 本地存储工具函数
 * 提供用户信息、聊天消息等数据的本地存储和读取功能
 */

/**
 * 直接获取Token
 * @returns {string | null} 存储的token值
 */
export const getStoredToken = () => {
  return localStorage.getItem('token');
};

/**
 * 直接获取User ID
 * @returns {string | null} 存储的用户ID
 */
export const getStoredUserId = () => {
  return localStorage.getItem('userId');
};

/**
 * 直接获取完整用户信息
 * @returns {object | null} 解析后的用户信息对象
 */
export const getStoredUserInfoDirect = () => {
  try {
    const userInfo = localStorage.getItem('userInfo');
    return userInfo ? JSON.parse(userInfo) : null;
  } catch (error) {
    console.error('Failed to get stored user info:', error);
    return null;
  }
};

/**
 * Redux Persist方式获取用户信息（保持向后兼容）
 * 优先从直接存储获取，失败时尝试从Redux Persist获取
 * @returns {object | null} 用户信息对象
 */
export const getStoredUserInfo = () => {
  try {
    // 首先尝试直接获取
    const directUserInfo = getStoredUserInfoDirect();
    if (directUserInfo) {
      return directUserInfo;
    }
    
    // 如果直接获取失败，尝试Redux Persist
    const persistedState = localStorage.getItem('persist:root');
    if (persistedState) {
      const parsedState = JSON.parse(persistedState);
      const userState = JSON.parse(parsedState.user || '{}');
      return userState.userInfo || null;
    }
    return null;
  } catch (error) {
    console.error('Failed to get stored user info:', error);
    return null;
  }
};

/**
 * 从Redux Persist获取User ID（保持向后兼容）
 * @returns {string | null} 用户ID
 */
export const getStoredUserIdFromRedux = () => {
  const userInfo = getStoredUserInfo();
  return userInfo?.userId || null;
};

/**
 * 获取存储的昵称
 * @returns {string | null} 用户昵称
 */
export const getStoredNickName = () => {
  const userInfo = getStoredUserInfo();
  return userInfo?.nickName || null;
};

/**
 * 获取存储的会话ID
 * @returns {string | null} 会话ID
 */
export const getStoredSessionId = () => {
  const userInfo = getStoredUserInfo();
  return userInfo?.sessionId || null;
};

/**
 * 打印所有存储的用户信息（用于调试）
 * @returns {object | null} 用户信息对象
 */
export const logStoredUserInfo = () => {
  console.log('=== 本地存储的用户信息 ===');
  
  // 直接存储的值
  console.log('直接存储的Token:', localStorage.getItem('token'));
  console.log('直接存储的User ID:', localStorage.getItem('userId'));
  
  // 从直接存储获取用户信息
  const directUserInfo = getStoredUserInfoDirect();
  console.log('直接存储的完整用户信息:', directUserInfo);
  
  // 从Redux Persist获取用户信息
  const reduxUserInfo = getStoredUserInfo();
  console.log('Redux Persist用户信息:', reduxUserInfo);
  
  console.log('========================');
  return directUserInfo || reduxUserInfo;
};

// ==================== 聊天消息相关功能 ====================

/**
 * 保存聊天消息到本地存储
 * @param {string} inquiryId - 问诊ID
 * @param {any[]} messages - 聊天消息数组
 */
export const saveChatMessages = (inquiryId: string, messages: any[]) => {
  try {
    const key = `chat_messages_${inquiryId}`;
    localStorage.setItem(key, JSON.stringify(messages));
  } catch (error) {
    console.error('Failed to save chat messages:', error);
  }
};

/**
 * 从本地存储加载聊天消息
 * @param {string} inquiryId - 问诊ID
 * @returns {any[]} 聊天消息数组
 */
export const loadChatMessages = (inquiryId: string) => {
  try {
    const key = `chat_messages_${inquiryId}`;
    const messages = localStorage.getItem(key);
    return messages ? JSON.parse(messages) : [];
  } catch (error) {
    console.error('Failed to load chat messages:', error);
    return [];
  }
};

/**
 * 清除指定问诊的聊天消息
 * @param {string} inquiryId - 问诊ID
 */
export const clearChatMessages = (inquiryId: string) => {
  try {
    const key = `chat_messages_${inquiryId}`;
    localStorage.removeItem(key);
  } catch (error) {
    console.error('Failed to clear chat messages:', error);
  }
};
